﻿/*
 * Created by SharpDevelop.
 * User: CeCi
 * Date: 27/03/2014
 * Time: 07:34 p.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Windows.Forms;
using System.IO;

namespace Gestión_UTN.util
{
	/// <summary>
	/// Description of Herramientas.
	/// </summary>
	public class Herramientas
	{
		public void crearBackup()
		{
			string CurrentDatabasePath = Application.StartupPath + @"\Data\Original\AtributosFundadora.accdb";
			FolderBrowserDialog fbd = new FolderBrowserDialog();
			String rutaBackup = Application.StartupPath + @"\Data\Backup";
			try {
				comprobarDirectorio(rutaBackup);
				fbd.SelectedPath = rutaBackup;
				if (fbd.ShowDialog() == DialogResult.OK)
				{
					string PathtobackUp = fbd.SelectedPath.ToString();
					DateTime fecha = DateTime.Now;
					String sfecha = "";
					sfecha = Convert.ToString(fecha.ToString("yyyy.MM.dd"));
					File.Copy(CurrentDatabasePath,PathtobackUp+"\\" + sfecha +".accdb",true);
					MessageBox.Show("Copia de Seguridad Exitosa!!","Exito",MessageBoxButtons.OK);
				}
			} catch (Exception ex) {
				EscribirLog.escribirArchivo(ex.Message);
				MessageBox.Show("Error al realizar Copia de Seguridad","Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
			}
			
		}
                
		public static void exportarAExcel(DataGridView dgv)
		{
			DateTime fecha = DateTime.Now;
			String sfecha = "";
			sfecha = Convert.ToString(fecha.ToString("yyyy.MM.dd"));
			SaveFileDialog fichero = new SaveFileDialog();
			String rutaExportacion = Application.StartupPath + @"\Tablas Exportadas\Muestras";
			
			fichero.Filter = "Excel (*.xls)|*.xls";
			fichero.FileName = "Muestras" + "." + sfecha + ".xls";
			
			try {
				
				fichero.InitialDirectory = rutaExportacion;
				if (fichero.ShowDialog() == DialogResult.OK)
				{
					Microsoft.Office.Interop.Excel.Application aplicacion;
					Microsoft.Office.Interop.Excel.Workbook libro_exportacion = null;
					Microsoft.Office.Interop.Excel.Worksheet hoja_exportacion;
					aplicacion = new Microsoft.Office.Interop.Excel.Application();
					
					libro_exportacion = aplicacion.Workbooks.Add(Application.StartupPath + @"\Templates\Muestras.xlt");
					
					
					hoja_exportacion =
						(Microsoft.Office.Interop.Excel.Worksheet)libro_exportacion.Worksheets.get_Item(1);
					
					
					for (int i = 0; i < dgv.Columns.Count; i++) {
						hoja_exportacion.Cells[2,i+1] = dgv.Columns[i].HeaderText;
					}
					//Recorremos el DataGridView rellenando la hoja de trabajo
					for (int i = 0; i < dgv.Rows.Count; i++)
					{
						for (int j = 0; j < dgv.Columns.Count; j++)
						{
							hoja_exportacion.Cells[i + 3, j + 1] = dgv.Rows[i].Cells[j].Value.ToString();
						}
					}
					libro_exportacion.SaveAs(fichero.FileName,
					                         Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal);
					libro_exportacion.Close(true);
					aplicacion.Quit();
					MessageBox.Show("La exportación se realizó correctamente","Exito",MessageBoxButtons.OK );
				}
			}catch (Exception ex) {
				EscribirLog.escribirArchivo(ex.Message);
				MessageBox.Show("No se pudo realizar la exportación!!","Alerta",MessageBoxButtons.OK,MessageBoxIcon.Error);
			}
			
		}
		
		public void recuperarBackup()
		{
			try {
				string PathToRestoreDB =  Application.StartupPath + @"\Data\Original\AtributosFundadora.accdb";
				OpenFileDialog ofd = new OpenFileDialog();
				comprobarDirectorio(Application.StartupPath + @"\Data\Backup");
				ofd.InitialDirectory = Application.StartupPath + @"\Data\Backup";
				if (ofd.ShowDialog() == DialogResult.OK)
				{
					string Filetorestore = ofd.FileName;
					
					// Rename Current Database to .Bak
					
					//File.Move(PathToRestoreDB, Filetorestore);
					
					//Restore the Databse From Backup Folder
					File.Copy(Filetorestore, PathToRestoreDB,true);
					MessageBox.Show("Recuperación exitosa","Exito",MessageBoxButtons.OK );
				}
				
			} catch (Exception ex) {
				EscribirLog.escribirArchivo(ex.Message);
				MessageBox.Show("No se pudo realizar la recuperación!!","Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
			}
			
		}

		public static void comprobarDirectorio(String ruta)
		{
			if (!Directory.Exists(ruta))
			{
				Directory.CreateDirectory(ruta);
			}
		}

		public static void moverArchivo(string rutaOrigen, string rutaDestino)
		{
			File.Move(rutaOrigen, rutaDestino);
		}

		
	}
}
